package com.ionehe.group.common.uaa.ex.domain.service;


import com.ionehe.group.common.io.Response;
import com.ionehe.group.common.uaa.ex.dto.AdminLoginDTO;
import com.ionehe.group.common.uaa.ex.dto.ManageInfoDTO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Copyright (c) 2020 ionehe.com
 * Date: 2020/11/26 0026
 * Time: 15:40
 *
 * @author 2020年 <a href="mailto:a@ionehe.com">秀</a>
 *
 * 后台管理员Service
 */
public interface AdminWriteService {

    /**
     * 注册功能
     *
     * @param manageInfoDTO 用户信息
     * @return 注册结果
     */
    Response<ManageInfoDTO> register(ManageInfoDTO manageInfoDTO);

    /**
     * 登录功能
     *
     * @param adminLoginDTO 管理员登陆dto
     * @return 生成的JWT的token
     */
    Response<String> login(AdminLoginDTO adminLoginDTO);

    /**
     * 刷新token的功能
     *
     * @param oldToken 旧的token
     * @return 新的token
     */
    Response<String> refreshToken(String oldToken);

    /**
     * 修改指定用户信息
     *
     * @param manageInfoDTO 用户信息
     * @return 成功或失败
     */
    Response<Boolean> update(ManageInfoDTO manageInfoDTO);

    /**
     * 删除指定用户
     *
     * @param id 用户id
     * @return 成功或失败
     */
    Response<Boolean> delete(Long id);

    /**
     * 修改用户角色关系
     *
     * @param adminId id
     * @param roleIds 角色集合
     * @return 成功或失败
     */
    @Transactional
    Response<Boolean> updateRole(Long adminId, List<Long> roleIds);

    /**
     * 修改密码
     *
     * @param updatePasswordParam 修改密码参数
     * @return 成功或失败
     */
    Response<Boolean> updatePassword(ManageInfoDTO updatePasswordParam);

}
